A classical computer operates by processing bits (binary digits) of information that obey the laws of classical physics. The bits are physically represented by a high or a low energy level, corresponding either to a logical one (e.g., high energy) or a logical zero (e.g., low energy). Transformations on these information bits can be described using simple classical logic gates such as AND and OR gates. A classical algorithm, such as one that multiplies two integers, can be decomposed into a long string of these simple logic gates. Like a classical computer, a quantum computer also has bits and gates. Instead of storing exclusively logical ones and zeroes, a quantum bit (“qubit”) can store any quantum mechanical superposition of the two, in some sense allowing a qubit to be in both classical states simultaneously. This ability, coupled with quantum gates that allow the production of such superpositions, enables a quantum computer to solve certain problems with exponentially greater efficiency than that of a classical computer.